查看原文
其他

对区块链撒谎:将“垃圾进,垃圾出”问题应用在去中心化网络上

Steven Pu 区块链大本营 2020-12-18

作者 | Steven Pu
翻译 | 火火酱~,责编 | 晋兆雨

出品 | 区块链大本营

头图 | 付费下载于视觉中国


在本文中,我们将讨论一个经常被忽略(大多是故意无视)的概念,即“真实世界中的数据如何与区块链交互”。
与其他系统一样,区块链也同样存在典型的“垃圾入、垃圾出”问题。区块链基础设施无法保证非链上生成的、不公开的数据的真实性,但不幸的是,世界上绝大多数数据都属于此类数据。因此,如果有人(或设备)向区块链提交了虚假数据的话,我们便没有办法确定该数据的真实性,最后只能将这些虚假数据永久地提交到区块链历史中。因此,如果把垃圾放到区块链中,便也会从区块链中得到垃圾。
如今,声称自己无意中忽略了这个问题的应用程序在市场上泛滥成灾,它们往往都会借助额外的技术层来营造数据正确的假象。比如:
  • 去中心化的数据市场:用代币激励公司将其数据挂牌出售。但是你怎么知道买来的数据是真实的呢?

  • 隐私保护查询:可以通过零知识证明来统计银行高净值客户,因此,就可以在银行不提供任何客户信息的情况下得到统计结果——你怎么知道银行的客户数据库不是捏造的呢?

对于公开的数据来说,你可以设计一款游戏,让有财务风险的玩家就所提供数据的真实性相互进行挑战(就像Chainlink或其他一些区块链项目那样)。但是,世界上绝大多数的数据都是非公开的。
那么,如何才能解决这个问题呢?关键是要从源头上保证数据安全

最实用的方法:确保数据来源可靠


如果数据不是从源头处获得的,而是通过第三方中介获取的,那么如果中介不值得信任的话,数据的真实性也同样不可信。在处理数据时,涉及的中介越多,需要付出的信任就越多,直到某一刻,当涉及的中介太多时,数据就和从随机生成器中生成的没什么两样了。
因此,我们的目标是要尽可能从靠近数据源的地方获取数据。例如,与其从零售商的数据库中获取销售数据,不如从销售硬件处获取;与其从气象网站上订阅数据,不如从气象传感器那里收集;与其阅读桥梁运营公司的PDF报告,不如试着从安装在桥梁上的摄像机和传感器中获取原始数据。
但是如何从源头保护数据呢?既然世界上的大多数数据都是由设备生成或收集的,那么让我们先研究一下如何保护设备生成的数据。这里,我们面临三个可能会出现问题的故障点:
  1. 身份:你怎么知道是什么在生成数据?是像你预期的那样来自温度传感器,还是来自恶意玩家的的随机数生成器?

  2. 处理和传输:即使数据源是真实且可识别的,你又怎么知道数据在处理和传输过程中(例如从传感器转移到通信模块的过程中)没有被更改、损坏或彻底调包?

  3. 数字/模拟接口:即使身份、处理和传输都是安全的,你又如何防止有人通过接入虚假输入信号,来改变设备收集数据的方式呢?

下面,让我们来看看能做些什么,逐一解决上述问题吧。

身份


为了保护数据生成设备的身份,可以在设备中嵌入一组公钥/私钥,将公钥公开,并且对硬件的实际输出进行现场检查,这才是能确保硬件提供可靠数据的切实可行的办法。但这仅仅是最简单的部分。
棘手的是,要如何确保这个身份不会被盗?我们可以使用一种名为安全元件(secure element, SE)的东西。该硬件可以在芯片内生成公钥/私钥对,并且具有很强的防篡改能力。SE通常只做一件事:为消息签名(提供身份证明的一种花哨讲法)。如果你用过信用卡或智能手机的话,就已经享受过安全元件的好处了。


处理和传输


为了保证数据处理和传输逻辑的安全,我们可以使用带有安全启动(secure boot, SB)的微控制器(MCU)。你可以把微控制器想象成一台非常简单的计算机。SB可以确保只有具有正确私钥的实体才能将应用程序加载到MCU中。可以提前与利害关系人共享应用程序逻辑和相关校验和,或者干脆开源,这样就可以在加载后对其进行验证了。
更重要的是,当应用程序彻底测试完毕后,我们需要从应用程序和MCU禁用所有修改功能,包括固件升级。这是为了确保应用程序逻辑保持现在的状态、不可变,甚至制造商也无法进行更改。
当然,这也存在明显的弊端,比如应用程序无法再进行升级。但是,我们也因此获得了真正的设备独立性,不受外界干扰,其行为值得信赖、具有确定性且不可改变。


数字/模拟接口


这个问题非常棘手,并且不能使用嵌入在数据收集和中继设备上的硬件来解决。一般来讲,要确保接口不被中断的话,就必须设计出新的机制,但这与应用程序有强相关性。我们可以用以下例子来进行说明。
假设你有一辆冷链物流公司的冷藏车,负责向当地超市运送鲜鱼。为了保证质量,鱼必须全程保持在一定的温度范围内。如果温度太高,鱼就会变质。如果温度太低,鱼的味道和口感就会变差。为了确保物流公司遵守合同规定的温度范围,超市在卡车上安装了温度传感器。
但是,如果卡车司机把传感器放在卡车前方的冰柜里,同时,为了节约能源成本而调高了制冷设备的温度,那会怎么样呢?传感器不知道自己被挪动了位置,收集并上传的温度数据一直都处于合同规定范围内。就这样,传感器被骗了。
降低这种风险的方法之一是将传感器硬连接到制冷装置中,使其无法被移动。但是,这种方法也不保险。比如说,可以在传感器周围包上一袋冰,这样一来,就可以将卡车其他地方的温度调高到要求范围以上了。
另一种更好(但更贵)的方法是在每包鱼上都贴上防篡改的封条,然后在每包鱼上都装上一个温度传感器。这样一来,如果司机想要取出温度传感器的话,就要破坏封条,这会违反合同的关键条款,并且这很容易就会被发现。
最后,要想解决数字/模拟接口的问题就需要进行大量的创新,解决方案往往具有高度的应用针对性。
当向企业客户提供区块链解决方案时,必须记住,如果存在更广泛的设备独立性问题,那么在应用于物联网时,仅有区块链是没有用的。我们要确保这些边缘设备生成的数据是真实可信的,并且完全不受外界影响。

原文链接:https://hackernoon.com/lying-to-the-blockchain-applying-the-garbage-in-garbage-out-problem-to-decentralized-networks-g52i3e66

本文由区块链大本营翻译,转载请注明出处



更多阅读推荐

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存